package com.qumitech.visualnovel.datasource.console;

import java.util.List;

import com.qumitech.visualnovel.model.dao.console.DailyRechargeDataV2DO;
import com.qumitech.visualnovel.model.dao.console.RechargeTransferDataDO;
import org.apache.ibatis.annotations.Param;
import com.qumitech.visualnovel.model.dao.console.DailyRechargeDataDO;

public interface DailyRechargeDataDOMapper {
    int deleteByPrimaryKey(Long id);

    int insert(DailyRechargeDataDO record);

    int insertSelective(DailyRechargeDataDO record);

    DailyRechargeDataDO selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(DailyRechargeDataDO record);

    int updateByPrimaryKey(DailyRechargeDataDO record);

    int getCount(@Param("channel") String channel,
        @Param("subChannel") String subChannel,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime);

    List<DailyRechargeDataDO> getList(@Param("channel") String channel,
        @Param("subChannel") String subChannel,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime,
        @Param("offset") Integer offset,
        @Param("limit") Integer limit);

    Float getDashboardRechargeNum();

    int countRechargeDailyStatistics(@Param("geoName") String geoName,
                                     @Param("channel") String channel,
                                     @Param("startTime") String startTime,
                                     @Param("endTime") String endTime);

    List<DailyRechargeDataV2DO> getRechargeDailyStatistics(@Param("startTime") String startTime,
                                                           @Param("endTime") String endTime,
                                                           @Param("geoName") String geoName,
                                                           @Param("channel") String channel,
                                                           @Param("offset") Integer offset,
                                                           @Param("limit") Integer limit);

    int countRechargeTransferStatistics(@Param("startTime") String startTime,
                                        @Param("endTime") String endTime,
                                        @Param("bookIds") List<Integer> bookIds,
                                        @Param("bookTitle") String bookTitle,
                                        @Param("geoName") String geoName,
                                        @Param("channel") String channel);

    List<RechargeTransferDataDO> getRechargeTransferStatistics(@Param("startTime") String startTime,
                                                               @Param("endTime") String endTime,
                                                               @Param("bookIds") List<Integer> bookIds,
                                                               @Param("bookTitle") String bookTitle,
                                                               @Param("geoName") String geoName,
                                                               @Param("channel") String channel,
                                                               @Param("offset") Integer offset,
                                                               @Param("limit") Integer limit);
}